package com.ttl;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.alibaba.ttl.TransmittableThreadLocal;
/**
 *
 * 功能描述: 主线程中，我们通过调用threadLocal.set()方法将值设置为42，并使用threadLocal.get()方法获取当前线程的值并进行打印输出。
 * 然后，我们使用线程池的execute()方法提交一个任务，该任务将在子线程中执行。在子线程的任务中，我们再次使用threadLocal.get()方法获取当前线程的值，并进行打印输出。
 * 最后，我们调用executorService.shutdown()方法关闭线程池。
 *
 * @param:
 * @return: 
 * @auther: csh
 * @date: 2023/7/8 21:42
 */
public class TransmittableThreadLocalDemo {
    public static void main(String[] args) {
        // 创建线程池
        ExecutorService executorService = Executors.newFixedThreadPool(2);

        // 创建TransmittableThreadLocal实例
        TransmittableThreadLocal<Integer> threadLocal = new TransmittableThreadLocal<>();

        // 在主线程设置值
        threadLocal.set(42);
        System.out.println("主线程 - ThreadLocal value: " + threadLocal.get());

        // 提交任务到线程池
        executorService.execute(() -> {
            // 打印子线程中的ThreadLocal值
            System.out.println("子线程 - ThreadLocal value: " + threadLocal.get());
        });

        // 关闭线程池
        executorService.shutdown();
    }
}
